package test4.B3;
import java.util.ArrayList;
import java.util.List;

public class StringExtractor {

    public static void main(String[] args) {
        // 示例代码字符串，模拟源代码文件内容
        String code = "String str = \"一般学习一门编程语言的时候，基本上第一个程序是输出\\\"Hello World!\\\"\";";

        List<String> extractedStrings = extractStringsFromCode(code);

        // 输出提取的字符串
        for (String str : extractedStrings) {
            System.out.println(str);
        }
    }

    // 从代码字符串中提取所有字符串
    public static List<String> extractStringsFromCode(String code) {
        List<String> strings = new ArrayList<>();
        boolean inString = false;
        StringBuilder currentString = new StringBuilder();

        for (int i = 0; i < code.length(); i++) {
            char c = code.charAt(i);

            if (inString) {
                if (c == '\\') {
                    if (i + 1 < code.length()) {
                        char nextChar = code.charAt(i + 1);
                        // 处理转义字符
                        switch (nextChar) {
                            case '\"': currentString.append('\"'); break;
                            case '\\': currentString.append('\\'); break;
                            case 'n': currentString.append('\n'); break;
                            case 't': currentString.append('\t'); break;
                            // 可根据需要添加更多转义字符
                            default: currentString.append(nextChar); break;
                        }
                        i++; // 跳过下一个字符
                    }
                } else if (c == '\"') {
                    // 结束字符串提取
                    inString = false;
                    strings.add(currentString.toString());
                    currentString.setLength(0);
                } else {
                    currentString.append(c);
                }
            } else if (c == '\"') {
                // 开始一个新的字符串
                inString = true;
            }
        }

        return strings;
    }
}
